블로그 릴레이 - Amazon Bedrock의 Prompt Flows 사용해보기

블로그 릴레이 - Amazon Bedrock의 Prompt Flows 사용해보기

Clock Icon2024.08.29

안녕하세요. 제조 비지니스 테크놀로지부의 이병현입니다.

본 블로그는 당사의 한국어 블로그 릴레이의 열 번째 블로그입니다.

이번 블로그의 주제는 「Amazon Bedrock의 Prompt Flows 사용해보기」 입니다.


Amazon Bedrock은 LLM 모델들을 AWS를 통해 사용할 수 있게 해주는 서비스입니다.

Amazon Bedrock에 대해서는 아래 블로그를 참고해 주세요.

https://dev.classmethod.jp/articles/korean-blog-relay-introduction-amazon-bedrock/

Amazon Bedrock에서 Prompt Flows라는 기능을 7월에 프리뷰로 공개했습니다.

https://aws.amazon.com/ko/about-aws/whats-new/2024/07/amazon-bedrock-prompt-management-flows-preview/

아쉽게도 서울 리전에서는 아직 사용할 수 없습니다. (2024/08 기준)

구체적인 사용법보다는 전체적인 서비스와 기능의 분위기를 설명하겠습니다.

Amazon Bedrock Prompt Flows란?

Prompt Flows는 Bedrock을 이용하면서 다양한 워크플로우를 생성할 수 있게 도와주는 기능입니다.

workflow-creation.f8e898d9a2b243729cab9640493658664b5cb3d3

프롬프트, RAG, AWS Lambda 호출 등 여러 기능들을 사용하여 LLM이 더 잘 동작할 수 있게 도와줍니다.

위 사진과 같이 웹 콘솔에서 UI를 보면서 직접 설정할 수도 있어서 매우 편리합니다.

웹 콘솔에서 직접 설정하고 실행까지 바로 확인할 수 있어, 빠른 테스트가 필요한 경우 유용합니다.

Amazon Bedrock Prompt Flows 사용해보기

Prompt Flows 추가

Amazon Bedrock에서 왼쪽의 오케스트레이션 메뉴 하위의 Prompt Flows에서 Prompt Flows를 추가하실 수 있습니다.

스크린샷 2024-08-28 20.42.12

이름과 역할이 필요합니다. 역할은 직접 만드셔도 되지만 스크린샷처럼 새로 생성해서 사용하겠습니다.

스크린샷 2024-08-28 20.43.34

그러면 위처럼 Input과 Output 노드(블럭 모양의 아이템)가 보이게됩니다. Input 노드는 하나지만 Output 노드는 앞으로 여러개를 추가할 수 있습니다.

프롬프트 추가

왼쪽 메뉴에서 보라색의 Prompts 라는 기능을 드래그해서 화면에 가져와 봅시다.

그리고 화살표를 연결해주죠.

스크린샷 2024-08-28 20.51.59

그러면 위처럼 3개의 노드가 서로 연결할 수 있습니다.

스크린샷 2024-08-28 22.28.17

해당 노드를 클릭하면 나오는 메뉴에서 프롬프트 설정을 할 수 있습니다. 사전 프롬프트, 변수, 모델의 파라미터를 지정할 수 있습니다.

저는 입력으로 들어오는 값에 대해 좋은 답변을 달라고 하는 것과 한국어로 답변을 해달라고 사전에 지정해봤습니다.

스크린샷 2024-08-29 00.36.25

돌아와서 실제로 테스트 해보면 설정한 프롬프트에 기반해서 답변이 나오는 것을 확인할 수 있습니다.


프롬프트를 여러개 만들어 두고 필요할 때 변경한다던지, 여러가지 방법으로 활용할 수 있겠네요.

AWS Lambda 추가

이번에는 위의 플로우에서 AWS Lambda를 추가해보겠습니다.

스크린샷 2024-08-29 00.23.55

사용자의 요청과 동시에 다른 곳에서 데이터를 가져오고 데이터를 사용자의 요청에 맞게 대답을 하는 플로우 입니다.

topic에는 사용자의 요청이 data에는 외부 데이터로부터 온 값을 사용하게 됩니다.

export const handler = async (event) => {
  const posts = await fetch('https://jsonplaceholder.typicode.com/posts')
      .then(response => response.json())
      .then(json => json);

  const response = {
    statusCode: 200,
    body: JSON.stringify(posts),
  };
  return response;
};

코드는 위처럼 여러개의 포스트 정보를 가져온다 가정해 보겠습니다.

스크린샷 2024-08-29 00.24.19

실제 사용자의 요청에 맞게 마지막 포스트를 요약해달라는 것을 이해하고 그대로 전해준 것을 확인할 수 있습니다!


참고로 요약 내용이 미묘해서 찾아보니 라틴어라 특이한 구문으로 되어있네요. 😅

  {
    "userId": 10,
    "id": 100,
    "title": "at nam consequatur ea labore ea harum",
    "body": "cupiditate quo est a modi nesciunt soluta\nipsa voluptas error itaque dicta in\nautem qui minus magnam et distinctio eum\naccusamus ratione error aut"
  }

마무리

본 블로그에 언급된 노드 외에도 여러 기능들이 있지만 아직까지 프리뷰라 많은 서비스들이 포함되어 있지는 않습니다.

하지만, 기본적인 프롬프트, AWS Lambda가 있으므로 잘만 사용한다면 여러가지 조합을 만들어 낼 수 있겠습니다.

점점 LLM을 이용하기 쉬워지는 것 같아서 흥미롭네요. 🤓


이상으로 한국어 블로그 릴레이의 열 번째 블로그 「Amazon Bedrock의 Prompt Flows 사용해보기」 편이었습니다.

다음 열한 번째 블로그 릴레이는 9월 첫째 주에 공개됩니다.

끝까지 읽어주셔서 감사합니다! 제조 비지니스 테크놀로지부의 이병현이었습니다.

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.